package org.mantenimientojsf.generales ;

import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.model.SelectItem;
import javax.annotation.ManagedBean;
import javax.enterprise.context.SessionScoped;
import javax.servlet.http.HttpSession;
/**
*
* @author avbravo
*/

@ManagedBean
@SessionScoped
public class JSFUtil implements Serializable {
private static final long serialVersionUID = 1L;
public static SelectItem[] getSelectItems(List<?> entities, boolean selectOne) { 
  int size = selectOne ? entities.size() + 1 : entities.size(); 
  SelectItem[] items = new SelectItem[size]; 
  int i = 0; 
  if (selectOne) { 
     items[0] = new SelectItem("", "---"); 
     i++; 
   } 
   for (Object x : entities) { 
      items[i++] = new SelectItem(x, x.toString()); 
    } 
    return items; 
}   
/*
 * logout 
  */
public String logout() {
   HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
   if (session != null) {
      session.invalidate();
   }
  return "/index";
}
public static void addErrorMessage(Exception ex, String defaultMsg) { 
   String msg = ex.getLocalizedMessage(); 
   if (msg != null && msg.length() > 0) { 
       addErrorMessage(msg); 
   } else { 
          addErrorMessage(defaultMsg); 
   } 
}   
public static void addErrorMessages(List<String> messages) { 
  for (String message : messages) { 
      addErrorMessage(message); 
  } 
}   

public static void addErrorMessage(String msg) { 
  FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg); 
  FacesContext.getCurrentInstance().addMessage(null, facesMsg); 
}  

public static void addSuccessMessage(String msg) { 
  FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg); 
  FacesContext.getCurrentInstance().addMessage("successInfo", facesMsg); 
}  

public static String getRequestParameter(String key) { 
  return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key); 
}  

public static Object getObjectFromRequestParameter(String requestParameterName, Converter converter, UIComponent component) { 
  String theId = JSFUtil.getRequestParameter(requestParameterName); 
  return converter.getAsObject(FacesContext.getCurrentInstance(), component, theId); 
} 


}
